#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
//int main()
//{
//    int arr[100] = { 0 };
//    int n = 0;
//    int m = 0;
//    scanf("%d%d", &n, &m);
//    scanf("%s", arr);
//    int l = 0;
//    int r = 0;
//    char c1 = 0;
//    char c2 = 0;
//    while (m--)
//    {
//        scanf("%d%d%c%c", &l, &r, &c1, &c2);
//        int i = 0;
//        for (i = l; i <= r; i++)
//        {
//            if (arr[i] == c1)
//            {
//                arr[i] = c2;
//            }
//        }
//    }
//    printf(arr);
//    return 0;
//}

//int main()
//{
//    char arr[100] = { 0 };
//    int n = 0;
//    int m = 0;
//    scanf("%d%d", &n, &m);
//    scanf("%s", arr);
//    int l = 0;
//    int r = 0;
//    char c1 = 0;
//    char c2 = 0;
//    while (m--)
//    {
//        scanf("%d %d %c %c", &l, &r, &c1, &c2);
//        int i = 0;
//        for (i = l - 1; i < r; i++)
//        {
//            if (arr[i] == c1)
//            {
//                arr[i] = c2;
//            }
//        }
//    }
//    printf("%s", arr);
//    return 0;
//}

//int main()
//{
//    char arr[50];
//    while (scanf("%s", arr) != EOF)
//    {
//        if (isupper(arr[0]))
//        {
//            printf("%c", arr[0]);
//        }
//        else
//        {
//            printf("%c", toupper(arr[0]));
//        }
//    }
//    return 0;
//}

int max3(int a, int b, int c)
{
    int ret = a > b ? a : b;
    return ret > c ? ret : c;
}
int main()
{
    double m = 0.0;
    int a, b, c;
    scanf("%d%d%d", &a, &b, &c);
    m = (double)max3(a + b, b, c) / (max3(a, b + c, c) + max3(a, b, b + c));
    printf("%.2lf", m);
    return 0;
}